package two.chapter_3.c3_1;

import two.chapter_1.c1_3.Collection;

/**
 * 符号表
 * @param <Key>
 * @param <Value>
 */
public interface ST<Key,Value>  {
    /**
     * 将键值对存入表中（若值为空则将键key从表中删除）
     * @param key
     * @param value
     */
    void put(Key key,Value value);

    /**
     * 获取键key对应的值（若键key不存在则返回null）
     * @param key
     * @return
     */
    Value get(Key key);


    /**
     * 从表中删去键key（及其对应的值）
     * @param key
     */
    void delete(Key key);

    /**
     * 键key在表中是否有对应的值
     * @param key
     * @return
     */
    boolean contains(Key key);

    boolean isEmpty();

    int size();

    /**
     * 表中所有键的集合
     * @return
     */
    Iterable<Key> keys();
}
